/*
 * Created on 28-ene-2005
 *
 * TODO To change the template for this generated file go to
 * Window - Preferences - Java - Code Style - Code Templates
 */
package com.juanfrivaldes.cio2005.business;

import java.util.List;

import org.springframework.dao.DataAccessException;
import org.springframework.mail.MailException;

import com.juanfrivaldes.cio2005.domain.Ponencia;
import com.juanfrivaldes.cio2005.domain.Revision;
import com.juanfrivaldes.cio2005.domain.RevisionFinal;
import com.juanfrivaldes.cio2005.domain.Usuario;

/**
 * @author root
 *
 * TODO To change the template for this generated type comment go to
 * Window - Preferences - Java - Code Style - Code Templates
 */
public interface Cio2005Facade {
	
	public void addUsuario(Usuario usuario) throws DataAccessException;
	
	public Usuario getUsuario(String nombre,String password) throws DataAccessException;
	
	public List getPonenciasByUsuario(String nombre) throws DataAccessException;
	
	public List getPonencias() throws DataAccessException;
	
	public List getUsuarios() throws DataAccessException;
	
	public void addPonencia(Ponencia ponencia) throws DataAccessException;

	public void sendMailRegistro(Usuario usuario) throws MailException;
	
	public void sendMailResumen(Usuario usuario,Ponencia ponencia) throws MailException;
	
	public void sendMailOlvido(Usuario usuario) throws MailException;
	
	/**
	 * @param email
	 * @return
	 */
	public Usuario getUsuario(String email) throws DataAccessException;
	
	public void revisarPonencia(Revision revision) throws DataAccessException;

	/**
	 * @param categoria
	 * @return
	 */
	public List getPonenciasByCategoria(String categoria);

	/**
	 * @param parameter
	 * @return
	 */
	public List getPonenciasWithUsuario(String usuario) throws DataAccessException;

	public List getPonenciasConfirmables() throws DataAccessException;

	public List getPonenciasConfirmablesByCategoria(String categoria) throws DataAccessException;
	
	public void sendMailConfirmacion(List ponencias) throws MailException,DataAccessException;

	public Ponencia getPonenciaById(int id) throws DataAccessException;

	public void marcaPonenciaFinal(Ponencia ponencia) throws DataAccessException;

	public void sendMailPonenciaFinal(Usuario user, Ponencia ponencia) throws MailException;

	public void mailing(List destinatarios, String asunto, String cuerpo)throws MailException;

	public void inscribeUser(String userMail) throws DataAccessException;

	public List getFinalesByCategoria(String categoria) throws DataAccessException;

	public List getFinales() throws DataAccessException;

	public void revisarFinal(RevisionFinal revision) throws DataAccessException;

	public void enviaMailInscripcion(String userMail) throws MailException;
	
	public List getInscritos() throws DataAccessException;
	
	public List getPagados() throws DataAccessException;
	
	public void setPagado(String user) throws DataAccessException;

	public List getFinalesConfirmables() throws DataAccessException;

	public List getPonenciasFinalesConfirmablesByCategoria(String categoria) throws DataAccessException;

	public void sendMailConfirmacionFinal(List list) throws DataAccessException,MailException;
}
